#include <stdio.h>
#include <string.h>

int main()
{
  // 可以直接初始化 Data 联合体吗？

  union Data
  {
    int intValue;
    float floatValue;
    char strValue[20];
  };

  union Data data;

  // 如果想初始化其他成员，需要先赋值
  union Data data2;
  data2.floatValue = 3.14f;        // 正确：给 floatValue 赋值
  strcpy(data2.strValue, "hello"); // 正确：给 strValue 赋值

  strcpy(data.strValue, "HelloWorld");
  printf("字符串值: %s\n", data.strValue);
  // 注意：此时strValue已经被覆盖，不能再使用
  printf("data2字符串值: %s\n", data2.strValue);
  data.intValue = 10;
  printf("整数值: %d\n", data.intValue);

  data.floatValue = 3.14;
  printf("浮点值: %.2f\n", data.floatValue);

  for (int i = 0; i < 20; i++)
  {
    printf("%c ", data.strValue[i]);
  }
  printf("\n");

  // 注意：此时strValue已经被覆盖，不能再使用
  printf("字符串值: %s\n", data.strValue);

  return 0;
}